#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,head[520],edge[520],ans,tot=1,used[520];
struct node
{
	int biu;
	int don;
	int nxt;
	
	void ins(int x,int y)
	{
		biu=x;
		don=y;
		nxt=head[x];
		head[x]=tot;
	}
}star[10009];


bool hungary(int x)
{
	for(int q=head[x];q;q=star[q].nxt)
	{
		int don=star[q].don;
		
		if(!used[don])
		{
			used[don]=1;
			
			if(edge[don]==0 || hungary(edge[don]))
			{
				edge[don]=x;
				return true;
			} 
		}
	}
	
	return false;
}
  
int main()
{
	scanf("%d%d",&n,&m);
	
	for(int i=1;i<=m;i++)
	{
		int tmpx,tmpy;
		scanf("%d%d",&tmpx,&tmpy);
		star[++tot].ins(tmpx,tmpy);
	}
	
	for(int i=1;i<=n;i++)
	{  
		memset(used,0,sizeof(used)); 
		if(hungary(i)) ans+=1;  
	} 
	
	printf("%d\n",ans);
	return 0; 
	
}
